package com.esd.db.service;

import java.util.List;
import java.util.Map;

import com.esd.db.model.user;

public interface UserService {
	int deleteByPrimaryKey(Integer userId);

	int insert(user record);

	int insertSelective(user record);

	user getByPrimaryKey(Integer userId);

	List<user> getAllUsers();

	int getMaxUserId();

	int getUserIdByUserName(String username);

	user getAllUsersByUserName(String username);

	int updateByPrimaryKeySelective(user record);

	int updateByPrimaryKey(user record);

	int getAllUserCount();

	int getAllUserCountByUserType(Integer userType);

	int getUserIdCountByUserName(String userName);

	user getByUserName(String userName);

	List<user> getLikeUsername(String userNameCondition, int userType, int page,int row);
	
	int getCountLikeUsername(String userNameCondition, int userType);
	
	List<Map<String,Object>> getWorkerSalary(String beginDate, String endDate, String userNameCondition, int taskEffective, int taskStatus, int dateType,int page,int row);

	int updateWorkerLvl(String workerId[],int userLvl);
	
	/**
	 * 查找用户推荐过的人数
	 * @param userId
	 * @return
	 */
	int getReferralNumByUserId(int userId);
	
	/**
	 * 获得用户推荐的用户们
	 * @param condition 查询条件
	 * @return
	 */
	List<user> getReferralUsers(Map<String,Object> condition);
	
	/**
	 * 获得用户推荐的用户总数
	 * @param condition 查询条件
	 * @return
	 */
	int getReferralUsersCount(Map<String,Object> condition);
	
	/**
	 * 根据userid更新推荐人id
	 * @param userId  更新的主键 userid
	 * @param referrerId   需要更新的推荐人id
	 * @return
	 */
	int updateReferrerIdByUserId(int userId, int referrerId);
	
	int insertSelectiveReturnUserId(user record);
	
	/**
	 * 修改用户所在工作组   两个表 user表可worker表
	 * @param userId
	 * @param workGroupCode
	 * @param operatorId 操作人id
	 * @return
	 */
	int changeWorkGroupByUserId(int userId, String workGroupCode, int operatorId);
	
	/**
	 * 查询所有工作组更改记录
	 * @param page
	 * @param row
	 * @return
	 */
	List<Map<String, Object>> queryWorkGroupChangeRecordsForOverView(int page, int row);
	
	/**
	 *  查询所有工作组更改记录总数
	 * @return
	 */
	int queryWorkGroupChangeRecordsForOverViewCount();
}
